#include <iostream>
#include <string>
#include <stack>
#include <unordered_map>

bool a(const std::string& b) {
    std::stack<char> d;
    std::unordered_map<char, char> c{{')', '('}, {']', '['}, {'}', '{'}, {'>', '<'}};
    for (char i : b) {
        if (c.find(i) == c.end()) { // If it's an opening bracket
            d.push(i);
        } else {
            if (d.empty() || c[i] != d.top()) {
                return false;
            }
            d.pop();
        }
    }
    return d.empty();
}

int main() {
    std::string F;
    std::cout << "Введите скобочную последовательность:";
    std::cin >> F;
    bool result = a(F);
    std::cout << (result ? "true" : "false") << std::endl;
    return 0;
}
